//能够逃生的人总数，没有人逃生输出0，输入异常时输出-1。
//输入异常 ? 给定一行非 0 整数数组，元素个数不超过30000；
// 有0 表示异常, 如果数字不是整数  可能输入了字母之类的, 不是数字
// 长度超过30000
// 5 10 8 -8 -5
const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
let initArr = [];
rl.on("line", (line)=>{
    if(initArr.length === 0) {
        initArr = line.trim().split(/\s+/)
        console.log(getResult(initArr))

        // clear
        initArr.length = 0
    }

})

function getResult(initArr) {
    let reg = /[^0-9\-]/
    if(initArr.length >= 30000) return -1
    for (const char of initArr) {
        if(reg.test(char) || char === "0") {
            return -1
        }
    }
    initArr = initArr.map(Number)

    // 用栈来处理数据, 正数压栈, 负数清理栈
    let stack = []
    let count = 0
    for (let num of initArr) {
        if(num > 0) {
            stack.push(num)
        } else {
            if(stack.length === 0) {
                count++
            } else {
                while(stack.length) {
                    let top = stack.pop()
                    if(top + num > 0) {
                        stack.push(top + num)
                        num = 0
                        break
                    } else if (top + num < 0) {
                        num = top + num
                    } else {
                        num = 0
                        break
                    }
                }
                // 杀出重围
                if(num < 0) {
                    count++
                }
            }
        }

    }
    count += stack.length
    return count
}